Event stream processing (ESP) is a set of technologies designed to assist the construction of event-driven information systems. ESP technologies can include event visualization, event databases, event-driven middleware, and event processing languages, or CEP. ESP deals with the task of processing multiple streams of event data with the goal of identifying the meaningful events within those streams. ESP enables applications such as algorithmic trading in financial services, radio frequency identification (RFID) event processing applications, fraud detection, process monitoring, and location-based services in mobile devices. Within an ESP system, a continuous data stream (comprising multiple, consecutive data items) is pushed through a query. Results of the query are subsequently pushed out of the system.
Typically, each operator (e.g. filter, join, etc.) in a CEP system gets its own processing threads. These threads are scheduled by the operating system based on scheduling policies. Such policies can work well for smaller machines with few CPUs, but generally do not work well with multicore machines with a large number of cores, especially where non-uniform memory access (NUMA) architecture is used. NUMA is a computer memory design where the memory access time depends on the memory location relating to the processor. Under NUMA, a processor can access its own local memory faster than a non-local memory. By providing a separate memory for each processor, no performance hits are encountered from multiple processors attempting to access the same memory. Unfortunately, existing CEP scheduling policies do not work well with NUMA devices.